Automata, or state machines, represent states, actions and transitions between those states. Automata are often used with computer programs to represent the states, actions and transitions of a part of the program, and may be used in various ways, such as to express validity constraints on strings, including in the context of program analysis and parameterized unit testing of code.
By way of example, consider testing how a program processes a pattern, such as by inputting various strings that need to match string constraints of the pattern. A typical problem is to efficiently solve such constraints, possibly in combination with other constraints. Automata may be used in generating such test strings.
Such constraints are common, and occur in many different contexts, such as unit testing of code, database query analysis, web applications, and so forth. For example, automata may be used in the context of symbolic analysis of database queries, where like-patterns are a kind of expressions that are common in SQL select-statements. Other uses of automata are well known.